﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Poli.IA.GA
{
    public class Musica
    {
        public string Nome { get; set; }
        public string Artista { get; set; }
        public string Display { get { return Nome + " / " + Artista; } }
        public EstiloEnum Estilo { get; set; }
        public NacionalidadeEnum Nacionalidade { get; set; }
        public DecadaEnum Decada { get; set; }
        public HitEnum Hit { get; set; }
        public TendenciaEnum Tendencia { get; set; }
        public RitmoEnum Ritmo { get; set; }
        public int Fitness { get; set; }

        public Musica() { }

        public Musica(string nome, string artista, EstiloEnum estilo, NacionalidadeEnum nacionalidade, DecadaEnum decada, HitEnum hit, TendenciaEnum tendencia,
            RitmoEnum ritmo)
        {
            this.Nome = nome;
            this.Artista = artista;
            this.Estilo = estilo;
            this.Nacionalidade = nacionalidade;
            this.Decada = decada;
            this.Hit = hit;
            this.Tendencia = Tendencia;
            this.Ritmo = Ritmo;
            this.Fitness = 0;
        }

        public int CalcularFitness(Perfil perfilSelecionado)
        {
            int fitness = 0;
            if (perfilSelecionado.Artista == Artista)
                fitness += 5;
            if (perfilSelecionado.Decada == Decada)
                fitness += 3;
            if (perfilSelecionado.Estilo >= Estilo - 1 && perfilSelecionado.Estilo <= Estilo + 1)
                fitness += 4;
            if (perfilSelecionado.Hit == Hit)
                fitness += 1;
            if (perfilSelecionado.Nacionalidade == Nacionalidade)
                fitness += 3;
            if (perfilSelecionado.Ritmo == Ritmo)
                fitness += 2;
            if (perfilSelecionado.Tendencia == Tendencia)
                fitness += 2;

            Fitness = fitness;

            return Fitness;
        }
    }
}
